home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / shell / AUSH_v317.lha / AUSH / AUSH.doc < prev    next >
Text File  |  1994-09-18  |  50KB  |  1,069 lines

  1.  
  2.  
  3.                AUSH - Manuel de référence
  4.  
  5.  
  6.  
  7.  
  8.  
  9. AboutThisDoc
  10.  
  11.       Ce manuel décrit la version 3.17 de l'utilitaire AUSH. Ce  programme
  12.   est (c)1992-1994 par Denis GOUNELLE, toute utilisation commerciale ou  vente
  13.   sans autorisation écrite est strictement interdite. Vous  pouvez  copier  et
  14.   diffuser ce programme aux conditions suivantes :
  15.  
  16.     - l'ensemble des fichiers doit être fourni
  17.     - aucun fichier ne doit avoir été modifié
  18.     - vous ne devez pas demander plus de 40FF pour cela
  19.  
  20.       Malgré de nombreux tests, je ne peux garantir que AUSH  ne  contient
  21.   aucune erreur. VOUS UTILISEZ CE PROGRAMME A VOS RISQUES  ET  PERILS.  Je  ne
  22.   pourrai en aucun cas être tenu pour responsable de tout dommage,  direct  ou
  23.   indirect, résultant de l'utilisation de AUSH.
  24.  
  25. Introduction
  26.  
  27.       AUSH (Amiga Ultimate SHell) est  un  interpréteur  de  commande  (ou
  28.   "shell") écrit pour l'Amiga, et destiné à remplacer entièrement le shell  de
  29.   Commodore. Il s'inspire de tous les shells que j'ai utilisé jusqu'ici, aussi
  30.   bien sous UNIX (sh, csh, et surtout tcsh 6.00.03) que sur Amiga (AShell  1.3
  31.   et Csh 4.01A), tout en intégrant de  nombreuses  idées  personnelles  et  en
  32.   gardant la plus grande compatibilité possible avec le shell de Commodore.
  33.  
  34.       Vos critiques et suggestions sur ce programme  seront  toujours  les
  35.   bienvenues. N'hésitez pas à m'écrire, à l'adresse suivante :
  36.  
  37.                    M. GOUNELLE Denis
  38.                   27, rue Jules GUESDE
  39.                 45400 FLEURY-LES-AUBRAIS
  40.                      FRANCE
  41.  
  42.       Vous pouvez également m'adresser un  message  à  l'adresse  Internet
  43.   "gounelle@alphanet.ch". Notez qu'il s'agit d'une boite à lettre  mise  à  ma
  44.   disposition par un ami, aussi veuillez n'envoyer que de courts messages.  De
  45.   plus, n'ayant pas accès directement à mes messages, n'espérez pas avoir  une
  46.   réponse avant une dizaine de jours.
  47.  
  48.       Merci à Pierre ARDICHVILI, Jean-Yves PROUX, Jean-Philippe  RAPP,  et
  49.   Michel SCHINZ pour leurs tests et leurs suggestions.
  50.  
  51. Installation
  52.  
  53.       Cette version de AUSH  ne  fonctionne  que  sous  système  2.04  (ou
  54.   supérieur). Copiez les fichiers "AUSH"  (le  shell  lui-même)  et  "NewAUSH"
  55.   (commande pour lancer un nouveau shell) dans le répertoire "C:".  Notez  que
  56.   AUSH et NewAUSH sont écrits en code ré-entrant, et peuvent donc parfaitement
  57.   être rendus résidents.
  58.       AUSH est désormais localisé, c'est-à-dire qu'il peut s'adapter à  la
  59.   langue par défaut si vous avez le système 2.1 ou plus. Il vous faudra  alors
  60.   copier le fichier catalogue désiré dans le répertoire correspondant à  votre
  61.   langue par défaut. Par exemple, s'il s'agit du français, copiez  le  fichier
  62.   "français.catalog" dans le répertoire  "SYS:Locale/Catalogs/Français",  sous
  63.   le nom "AUSH.catalog"
  64.  
  65. La commande NewAUSH
  66.  
  67.       Cette commande est l'équivalent des commandes "NewCLI" et "NewShell"
  68.   du shell de Commodore. Elle ne fonctionnera que si le  programme  "AUSH"  se
  69.   trouve dans le chemin d'accès défini par la commande "Path". Pour lancer  un
  70.   nouveau shell, depuis la ligne de commande, tapez :
  71.  
  72.       NewAUSH [WINDOW <spécification de fenêtre>] [FROM <fichier>]
  73.  
  74.       Pour lancer un nouveau shell depuis le WorkBench, créez une icône de
  75.   type "Project". Indiquez éventuellement une taille de pile (champ  "STACK"),
  76.   une  spécification  de  fenêtre  (champ   "TOOL   TYPE",   sous   la   forme
  77.   "WINDOW=spécification"), et un nom de  fichier  de  démarrage  (champ  "TOOL
  78.   TYPE", sous la forme "FROM=fichier"). N'oubliez  pas  de  mettre  le  chemin
  79.   d'accès à NewAUSH dans le champ "DEFAULT TOOL".
  80.  
  81. Notions de base
  82.  
  83.       Lorsque vous  lancez  AUSH,  un  message  indiquant  la  version  du
  84.   programme apparait, suivit d'une chaine d'invite (ou "prompt"). Par  défaut,
  85.   cette chaine indique le numéro du shell, suivit du  répertoire  courant.  Le
  86.   shell attend alors vos commandes.
  87.  
  88.       Une commande simple  est  une  suite  de  mots  séparés  par  un  ou
  89.   plusieurs espaces. Le premier mot indique la commande  à  exécuter,  et  les
  90.   autres sont les arguments à passer à cette commande.
  91.       Si  le  premier  mot  correspond  à  un   alias,   la   substitution
  92.   correspondante est effectuée. Cela continue tant que c'est possible, ce  qui
  93.   veut dire qu'un alias  peut  être  défini  en  fonction  d'un  autre.  Notez
  94.   cependant qu'il n'y a pas de contrôle de récursivité des  définitions.  Vous
  95.   pouvez désactiver la substitution des alias en  ajoutant  le  caractère  "\"
  96.   devant le nom de la commande (par exemple "\ls df0:")
  97.       AUSH examine également les arguments, et remplace  certains  d'entre
  98.   eux en fonction des règles suivantes :
  99.  
  100.       ;           tout ce qui suit est un commentaire, et est ignoré.
  101.       ^car        remplacé par "CTRL-car" si "car"  est  une  lettre,  par
  102.           "car" sinon.
  103.       §n          remplacé par le  n-ième  répertoire  dans  la  pile  des
  104.           répertoires.
  105.       $var        remplacé par la valeur de la  variable  "var"  (cherchée
  106.           d'abord  dans  les  variables  locales,  puis  dans  les
  107.           variables  globales,  et  enfin   dans   les   variables
  108.           d'environnement de Commodore) ou par une chaine vide  si
  109.           cette variable n'est pas définie.
  110.           Le nom de la variable peut être indiqué entre  accolades
  111.           afin de le séparer de la suite  :  si  vous  voulez  par
  112.           exemple afficher le contenu de la variable "var"  suivit
  113.           du  mot  "coucou",   il   vous   faudra   écrire   "echo
  114.           ${var}coucou" et non "echo $varcoucou".
  115.           Le nom de la variable peut  éventuellement  être  suivit
  116.           d'un nom de fonction. Cette fonction sera  appliquée  au
  117.           contenu de la variable (si la variable est définie) lors
  118.           de la substitution. Notez que  le  contenu  réel  de  la
  119.           variable ne sera pas modifié. Les fonctions  disponibles
  120.           sont :
  121.  
  122.           lower   converti en minuscules
  123.           upper   converti en majuscules
  124.           first   extrait le premier caractère
  125.           slead   supprime espaces et tabulations en tête
  126.           len     calcule la longueur
  127.           base    supprime le chemin d'accès
  128.           noext   supprime l'extension
  129.           expand  étend le motif
  130.           split   découpe la variable en plusieurs sous-chaines
  131.               (voir commande "for")
  132.  
  133.           La syntaxe à respecter est la forme "var:fonction",  par
  134.           exemple "$config:lower" ou "${config:lower}".
  135.       motif       remplacé par le nom de tous les fichiers  correspondant.
  136.           Un  motif   est   un   mot   contenant   au   moins   un
  137.           méta-caractères  AmigaDOS.  Notez  que  la  plupart  des
  138.           commandes (list,  copy,  ...)  étendent  elles-même  les
  139.           motifs, et que dans ce cas  il  vous  faudra  mettre  le
  140.           motif entre quotes  (par  exemple  "list  '#?.o'")  pour
  141.           éviter des conflits.
  142.       {expr}      remplacé par la valeur de l'expression (voir la  syntaxe
  143.           plus loin).
  144.       !!          remplacé par la dernière commande dans l'historique.
  145.       !n          remplacé par la commande numéro "n" dans l'historique.
  146.       !chaine     remplacé par la dernière commande commençant par
  147.           "chaine" dans l'historique.
  148.       `cmd`       remplacé par la première ligne produite en sortie par la
  149.           commande indiquée. Les espaces  en  tête  sont  éliminés
  150.           avant remplacement, la ligne est considéré comme un seul
  151.           argument et n'est pas ré-interprété.
  152.           Exemple : la commande "set toto `type config`" copie  le
  153.           contenu de la première ligne du fichier "config" dans la
  154.           variable locale "toto".
  155.       \car        copie le caractère indiqué sans l'interpréter.
  156.       'chaine'    copie la chaine sans interprétation (à part de la  forme
  157.           "\car").
  158.       "chaine"    copie la chaine sans interprétation, à part  des  formes
  159.           "^car", "§n",  "$var",  "{expr}"  et  "\car".  De  plus,
  160.           l'extension des motifs n'est pas désactivée.
  161.  
  162.       AUSH est également capable de rediriger l'entrée ou la sortie  d'une
  163.   commande : au lieu de se faire sur la fenêtre courante, elle se fera sur  le
  164.   fichier indiqué. La syntaxe à respecter est la suivante :
  165.  
  166.       >nom        redirection de la  sortie  vers  le  fichier  "nom".  Le
  167.           fichier est écrasé s'il existe déjà, créé sinon.
  168.       >>nom       redirection de la  sortie  vers  le  fichier  "nom".  La
  169.           sortie est ajoutée à la  fin  du  fichier  s'il  existe,
  170.           sinon le fichier est créé.
  171.       <nom        redirection de l'entrée depuis le fichier "nom".
  172.  
  173.       La spécification de ces redirections peut se faire n'importe où  sur
  174.   la ligne de commande. Il peut y avoir un  ou  plusieurs  espaces  entre  les
  175.   caractères  de  redirection  et  le  nom  de  fichier  (comme  par   exemple
  176.   "list > maliste").
  177.  
  178.       Une commande complexe est composée d'au moins deux commandes simples
  179.   enchainées par une des formes suivantes :
  180.  
  181.       cmd1|cmd2|...   exécution  successive  de  commandes  simples,  avec
  182.               "pipes" (la  sortie  de  la  commande  à  gauche  du
  183.               caractère "|"  est  utilisée  comme  entrée  par  la
  184.               commande indiquée à droite), tant que le code retour
  185.               est nul.
  186.       cmd1,cmd2,...   exécution successive de commandes, tant que le  code
  187.               retour est nul. Vous pouvez spécifier des  commandes
  188.               simples, mais aussi des enchainements par pipes (par
  189.               exemple "cd ram: , list | wc , delete toto").
  190.  
  191.       Le code retour d'une commande complexe  est  celui  de  la  dernière
  192.   commande simple exécutée. Seule la dernière commande simple  d'une  commande
  193.   complexe peut être lancée en arrière plan.
  194.  
  195.       Une fois l'analyse de la ligne  de  commande  terminée,  AUSH  lance
  196.   l'exécution de la commande correspondante. La recherche se fait d'abord dans
  197.   la liste des commandes internes au shell, puis dans la liste  des  commandes
  198.   résidentes, et enfin dans les répertoires  indiqués  à  l'aide  la  commande
  199.   "Path". Une fois la commande lancée, AUSH attend la fin  de  son  exécution,
  200.   met à jour certaines variables (comme celle indiquant le code retour  de  la
  201.   dernière commande exécutée) puis affiche de nouveau la chaine d'invite.
  202.       Vous pouvez demander une exécution en arrière plan, c'est-à-dire que
  203.   AUSH n'attendra pas la fin de la commande. Il vous faudra alors spécifier le
  204.   caractère "&" sur la ligne de commande (par exemple "list >maliste  &").  Le
  205.   shell affichera alors le numéro de processus de cette commande puis l'invite
  206.   ré-apparaitra immédiatement.
  207.       Par défaut, les commandes héritent de la  priorité  du  shell,  mais
  208.   AUSH vous permet de modifier temporairement cette priorité. Ainsi,  si  vous
  209.   tapez une ligne de la forme "cmd @n", la  commande  indiquée  sera  exécutée
  210.   avec la priorité "n" (par exemple "list @-3" lancera la commande "list" avec
  211.   la priorité -3). Ceci ne marchera cependant pas pour les commandes internes.
  212.   De même, lors du lancement en arrière plan,  vous  pouvez  faire  suivre  le
  213.   caractère "&" par la priorité à donner à la  commande.  Par  exemple,  "list
  214.   >maliste &5" lancera la commande "list" en arrière plan, avec la priorité 5.
  215.       Notez que les spécifications  "&"  et  "@"  peuvent  être  indiquées
  216.   n'importe où sur la ligne de commande.
  217.  
  218. Les variables
  219.  
  220.       AUSH vous permet de définir des variables, comme dans un langage  de
  221.   programmation classique. Les caractères autorisés pour les noms de variables
  222.   sont les lettres minuscules et majuscules, les  chiffres,  et  le  caractère
  223.   souligné.  Notez   que   minuscules   et   majuscules   sont   différenciées
  224.   (contrairement  aux  noms  de  fichiers).  Ces  variables  peuvent  contenir
  225.   n'importe quelle valeur, aussi bien numérique que alphanumérique.
  226.       Les  variables  globales  sont  accessibles  à  tous   les   niveaux
  227.   d'exécution, c'est-à-dire  aussi  bien  en  mode  interactif  que  dans  les
  228.   fichiers de commandes. Elles ne  peuvent  être  détruites.  Notez  qu'il  ne
  229.   s'agit pas des variables au sens des variables d'environnement de Commodore.
  230.   Elles ne sont pas partagées par plusieurs shells.
  231.       Une variables locale n'est accessible que dans le niveau d'exécution
  232.   où elle a été définie pour la  première  fois.  Lors  du  retour  au  niveau
  233.   précédent, les variables locales sont détruites automatiquement.
  234.       Certaines variables permettent de contrôler et de  paramètrer  AUSH.
  235.   Ces variables sont décrites plus loin.
  236.  
  237. Expressions
  238.  
  239.       AUSH peut évaluer des expressions entières,  exprimées  en  notation
  240.   polonaise inversée postfixée. Vous pouvez utiliser des variables locales  ou
  241.   globales dans ces expressions, si leurs  valeurs  sont  numériques.  Il  est
  242.   possible d'indiquer des nombres hexadécimaux (précédés par "0x", par exemple
  243.   "0x13e"). Par défaut le résultat est en  décimal.  Les  opérateurs  reconnus
  244.   sont :
  245.  
  246.       +       addition
  247.       -       soustraction
  248.       *       multiplication
  249.       /       division
  250.       %       modulo (reste de la division entière)
  251.       <       décalage à gauche
  252.       >       décalage à droite
  253.       &       et
  254.       |       ou
  255.       sx      dépile le sommet de pile dans le registre x
  256.       lx      empile le contenu du registre x
  257.       HEX     affiche le résultat en hexadécimal
  258.  
  259.       Il y a dix registres (désignés par un chiffre de 0 à 9)  initialisés
  260.   à zéro au  démarrage  du  shell.  Ils  conservent  leur  valeur  entre  deux
  261.   évaluations d'expression. Les nombres et les opérateurs doivent être séparés
  262.   par au moins un espace, sauf le - unaire (négation).
  263.  
  264.   Exemples :
  265.  
  266.       echo { 34 3 / 4 + } => 15
  267.       echo { 7 3 - }      => 4
  268.       echo { 10 -2 + }    => 8
  269.  
  270.       set cpt 3
  271.       echo { $cpt 2 * }   => 6
  272.       set cpt { $cpt 1 + }
  273.       echo $cpt           => 4
  274.  
  275. Les fichiers de commandes
  276.  
  277.       Vous pouvez regrouper plusieurs commandes dans  un  fichier,  et  le
  278.   faire exécuter par AUSH comme un programme quelconque. Tout ce passera alors
  279.   comme si vous aviez tapé cette suite de commandes au clavier, à part sur  le
  280.   plan des variables locales.
  281.       Dans un fichier de commandes, la variable locale "argc"  indique  le
  282.   nombre d'arguments reçus. AUSH  positionne  également  des  pseudo-variables
  283.   locales (elles n'apparaissent pas dans la liste des variables données par la
  284.   commande "set", et ne peuvent être modifiées) : la variable "0" contient  le
  285.   nom du fichier de commandes,  les  variables  "1",  "2",...  les  différents
  286.   arguments, et la variable "*" la liste des  arguments  (à  partir  de  "$1")
  287.   séparés par un espace.
  288.       Chaque  fois  que  vous  lancez  AUSH,  le  fichier   de   commandes
  289.   "S:.aushrc" est exécuté (s'il existe). L'argument optionnel  "FROM  fichier"
  290.   permet d'exécuter le fichier de commandes  indiqué  plutôt  que  le  fichier
  291.   "S:.aushrc".
  292.  
  293. Gestion de l'historique
  294.  
  295.       AUSH peut mémoriser vos commandes, et vous permettre de les rappeler
  296.   par la suite. Le  mécanisme  d'historique,  qui  ne  fonctionne  qu'en  mode
  297.   interactif, est contrôlé par la variable "history" (qui indique le nombre de
  298.   commandes à conserver). La  commande  "history"  (décrite  plus  loin)  vous
  299.   permet de voir le contenu de l'historique.
  300.  
  301.       La variable "savehist" indique le nombre de commandes sauvées  entre
  302.   chaque exécution d'un shell. Ce fichier (généré lors de  la  terminaison  du
  303.   shell) est automatiquement chargé lors du démarrage, et les commandes  qu'il
  304.   contient sont copiées dans l'historique. La variable  "histfile"  peut  être
  305.   définie, pour indiquer le nom  du  fichier  de  sauvegarde.  Par  défaut  ce
  306.   fichier est "S:.history".
  307.  
  308. Edition de la ligne de commandes
  309.  
  310.       Ce mécanisme permet de se passer du gestionnaire de console  NewCON.
  311.   Il est activé en affectant la valeur "1"  à  la  variable  "lineedit".  Vous
  312.   pouvez alors utiliser les  touches  suivantes  pour  éditer  vos  lignes  de
  313.   commande :
  314.  
  315.     gauche       caractère précédent.
  316.     droite       caractère suivant.
  317.     shift-gauche mot précédent.
  318.     shift-droit  mot suivant.
  319.     shift-haut   dernière commande commençant par la ligne courante.
  320.     haut         commande précédente dans l'historique.
  321.     bas          commande suivante dans l'historique.
  322.     ^A           va en début de ligne.
  323.     ^B           caractère précédent.
  324.     ^E           va en fin de ligne.
  325.     ^F           caractère suivant.
  326.     ^K           efface la fin de ligne.
  327.     ^L           ré-affiche la ligne.
  328.     ^N           commande suivante dans l'historique.
  329.     ^P           commande précédente dans l'historique.
  330.     ^S           échange les deux caractères précédents.
  331.     ^T           première commande dans l'historique.
  332.     ^W           efface la fin du mot.
  333.     ^X           efface la ligne.
  334.     ^Z           dernière commande dans l'historique.
  335.     RETURN       exécute la commande, après sauvegarde dans l'historique.
  336.     ESC          annule la commande, après sauvegarde dans l'historique.
  337.  
  338.     ^V           le mot précédent est considéré comme un nom de variable
  339.              et est remplacé par la valeur de cette variable.
  340.              Exemple : echo version<^V> => echo 1.10.
  341.     TAB          complète le nom de fichier ou de variable.
  342.              Exemple :   cd ram:
  343.                  list Cl<TAB>  => list ClipBoards/
  344.                  echo $hi<TAB> => echo $history
  345.              S'il y a plusieurs possibilités, AUSH complète le plus
  346.              loin possible et affiche la liste des possibilités.
  347.              Pour compléter un nom de fichier, AUSH lui ajoute le
  348.              contenu de la variable "filepat" et étend le motif
  349.              ainsi obtenue.
  350.     ^D           affiche la liste des possibilités pour compléter le
  351.              nom de fichier ou de variable (sans modifier la ligne
  352.              de commande).
  353.  
  354.     HELP         appelle la requête de fichier. Si vous choisissez un
  355.              fichier, son nom sera ajouté dans la ligne de commande.
  356.  
  357.     f1 à f10     remplacé par la valeur des variables "f1" à "f10", ou
  358.              "F1" à "F10" si shifté.
  359.  
  360.   Les commandes TAB et ^D peuvent être utilisées au milieu  d'un  mot.  Toutes
  361.   les touches de contrôle peuvent être redéfinies, à  l'aide  de  la  variable
  362.   spéciale "keys" (voir plus loin).
  363.  
  364. Gestion des répertoires
  365.  
  366.       Si vous définissez l'alias "dircmd", cet alias sera  exécuté  chaque
  367.   fois que vous taperez un nom de  répertoire  comme  nom  de  commande  (sans
  368.   argument, redirection, pipe, ni  lancement  en  arrière-plan).  Par  exemple
  369.   "alias dircmd cd %1" vous permet d'avoir un "cd" implicite :  taper  le  nom
  370.   d'un répertoire suffit pour y aller. Vous pouvez également définir un  alias
  371.   plus complexe, comme "alias dircmd cd %1 , list FILES QUICK".
  372.  
  373.       AUSH peut gérer une pile de répertoire (64  entrées).  L'ajout  d'un
  374.   répertoire ce fait à l'aide la commande  interne  "pushd",  le  retrait  par
  375.   "popd", et l'affichage du contenu de la pile par "dirs" (ces commandes  sont
  376.   décrites plus loin).
  377.       Vous pouvez utiliser cette pile dans vos  commandes  avec  la  forme
  378.   "§n", où "n" est le numéro d'un répertoire dans  la  pile  (indiqué  par  la
  379.   commande "dirs").
  380.  
  381. Commandes internes
  382.  
  383.       Ce chapitre décrit  toutes  les  commandes  internes  de  AUSH.  Ces
  384.   commandes ne peuvent  être  lancées  en  arrière  plan  mais  acceptent  les
  385.   redirections en entrée et en sortie. Elles retournent 0  (RETURN_OK)  ou  20
  386.   (RETURN_FAIL) suivant le cas.
  387.       Lors de l'affichage de la valeur d'une variable  par  les  commandes
  388.   "setvar" ou "set", les attributs  de  cette  variable  sont  affichés  entre
  389.   parenthèses ("x" pour exportable, "r" pour lecture seulement).
  390.  
  391.   alias
  392.       Affiche la liste des alias et leurs définitions.
  393.  
  394.   alias nom
  395.       Affiche la définition de l'alias indiqué.
  396.  
  397.   alias nom chaine
  398.       Défini un alias "nom" de valeur "chaine". Dans la chaine, le symbole
  399.       "[]" indique où placer les arguments  lors  de  la  substitution  de
  400.       l'alias. Il est possible de désigner les arguments un par  un,  avec
  401.       les spécifications "%1", "%2", ..."%9".
  402.  
  403.   cd [rep]
  404.       Sans argument affiche le nom  du  répertoire  courant,  sinon  "rep"
  405.       devient le répertoire courant.
  406.  
  407.   dirs
  408.       Affiche le contenu de la pile des répertoires.
  409.  
  410.   echo [-c] [args...]
  411.       Affiche les arguments sur la sortie  standard,  suivis  d'un  retour
  412.       chariot sauf si vous indiquez l'option "-c".
  413.  
  414.   eval
  415.       Passe en mode évaluation : toute ligne en entrée est analysée  comme
  416.       une expression (voir syntaxe plus haut) et le résultat affiché. Pour
  417.       sortir de ce mode, tapez "x" tout seul sur une ligne.
  418.  
  419.   exit [code]
  420.       Retourne au  niveau  d'exécution  précédent,  avec  le  code  retour
  421.       indiqué (0 par défaut). En mode interactif, termine le shell.
  422.  
  423.   export vars...
  424.       Marque les variables  locales  indiquées  comme  "exportables".  Ces
  425.       variables deviennent alors  lisibles,  modifiables  et  détruisibles
  426.       dans les fichiers de commandes lancés depuis le  niveau  d'exécution
  427.       courant.
  428.  
  429.   for var in val1 val2... valn
  430.   ...
  431.   done
  432.       Effectue une boucle. La variable "var" (locale)  prend  les  valeurs
  433.       indiquées  dans  la  liste,  et  pour  chaque  valeur  la   séquence
  434.       d'instruction entre le "for" et le "done"  est  exécutée  une  fois.
  435.       Après le "done",  la  variable  contient  la  dernière  valeur  pour
  436.       laquelle la boucle a été effectuée.  En  mode  interactif,  l'invite
  437.       devient celle indiquée par la variable "prompt3", entre le "for"  et
  438.       le "done".
  439.       Vous pouvez également utiliser la forme "for var in val1  ..  val2",
  440.       qui effectue la boucle pour chaque valeur comprise entre les nombres
  441.       "val1" et "val2" inclus. Si le nombre "val2" est inférieur au nombre
  442.       "val1", la boucle est effectué avec un pas de -1. Les nombres "val1"
  443.       et "val2" peuvent être négatifs.
  444.       La fonction "split" peut être très utile ici : si la variable "toto"
  445.       contient "ceci est un exemple", la commande "for i in $toto" ne fera
  446.       qu'une seule boucle, avec "i" valant  "ceci  est  un  exemple".  Par
  447.       contre, la commande "for i in $toto:split" fera bien quatre boucles,
  448.       avec "i" valant successivement "ceci", "est", "un" et "exemple".
  449.  
  450.   for var from file
  451.   ...
  452.   done
  453.       Effectue une boucle de la même façon que pour la  forme  précédente,
  454.       sauf que la variable "var" (locale) prend successivement pour valeur
  455.       chaque ligne du fichier indiqué.
  456.  
  457.   history [str]
  458.       Donne la liste des commandes présentes dans  l'historique.  Si  vous
  459.       indiquez un argument "str", l'affichage sera  limité  aux  commandes
  460.       commençant par la chaine de caractères"str".
  461.  
  462.  
  463.   if [NOT] condition
  464.   ....
  465.   [else
  466.   ....]
  467.   endif
  468.       Exécution conditionnelle. En mode "interactif", la  chaine  d'invite
  469.       devient celle indiquée par la variable "prompt2".
  470.       La condition peut être :
  471.  
  472.       -d nom      vrai si "nom" est un répertoire (1)
  473.       -e nom      vrai si "nom" existe (1)
  474.       -f nom      vrai si "nom" est un fichier (1)
  475.       -o nom nom2 vrai si "nom1" et "nom2" existent et que
  476.               "nom" est plus ancien que "nom2" (1)
  477.       -s nom      vrai si "nom" est un fichier non vide (1)
  478.       str = str   vrai si les deux chaines sont identiques
  479.       str == str  vrai si les deux chaines sont identiques
  480.               (sans différencier majuscules et minuscules)
  481.       n1 LT n2    vrai si n1 est inférieur n2
  482.       n1 EQ n2    vrai si n1 est égal à n2
  483.       n1 GT n2    vrai si n1 est supérieur n2
  484.       n1 LE n2    vrai si n1 est inférieur ou égal à n2
  485.       n1 NE n2    vrai si n1 est différent de n2
  486.       n1 GE n2    vrai si n1 est supérieur ou égal à n2
  487.  
  488.       Le  mot-clé  "NOT"  avant  une  condition  permet  d'inverser  cette
  489.       condition. Jusqu'à 16 commandes "if" peuvent être imbriquées.
  490.  
  491.       (1) Si la lettre après le tiret est en majuscule (exemple: "-D"), le
  492.       test échouera sans requêtes  de  l'AmigaDOS  en  cas  de  volume
  493.       absent, lecteur de disquette vide, etc...
  494.  
  495.   jobs
  496.       Affiche la liste des processus lancés en arrière plan.
  497.  
  498.   loadhist
  499.       Force le chargement immédiat du fichier contenant  l'historique  des
  500.       commandes. Cette commande peut être utile si vous changez la  valeur
  501.       de la variable "histfile" et que vous voulez prendre  en  compte  le
  502.       nouveau fichier.
  503.  
  504.   popd [nb]
  505.       Sans arguments dépile le dernier répertoire empilé  et  en  fait  le
  506.       répertoire courant, sinon tronque la pile des répertoires  aux  "nb"
  507.       premiers répertoires ("popd 0" vide complètement la pile).
  508.  
  509.   pushd rep
  510.       Empile le répertoire courant,  puis  fait  de  "rep"  le  répertoire
  511.       courant.
  512.  
  513.   read [-f] var
  514.       Affecte à la variable locale indiquée une  ligne  lue  sur  l'entrée
  515.       standard. Retourne RETURN_FAIL en cas de fin de fichier. L'option -f
  516.       permet d'interdire la saisie d'une chaine vide.
  517.  
  518.   readonly vars...
  519.       Empêche toute modification ou destruction des variables (locales  ou
  520.       globales) indiquées. Cette opération est irréversible.
  521.  
  522.   set
  523.       Affiche la liste des variables locales, ainsi que leur valeurs.
  524.  
  525.   set var
  526.       Affiche la valeur de la variable locale "var".
  527.  
  528.   set var val
  529.       Affecte la valeur "val" à la variable locale "var". La variable  est
  530.       créée si elle n'existe pas encore.
  531.  
  532.   setvar
  533.       Affiche la liste des variables globales, ainsi que leur valeurs.
  534.  
  535.   setvar var
  536.       Affiche la valeur de la variable globale "var".
  537.  
  538.   setvar var val
  539.       Affecte la valeur "val" à la variable globale "var". La variable est
  540.       créée si elle n'existe pas encore.
  541.  
  542.   shift
  543.       Décale les arguments d'un fichier de commandes : la  pseudo-variable
  544.       "1" reçoit le contenu de "2", puis la pseudo-variable "2"  celui  de
  545.       "3", etc... La variable "argc" et la pseudo-variable "*" sont  mises
  546.       à jour.
  547.  
  548.   source fichier
  549.       Exécute le fichier de commandes indiqué. Si vous redirigez la sortie
  550.       de cette commande, la redirection concernera toutes les commandes du
  551.       fichier.
  552.  
  553.   stop [code]
  554.       Interrompt l'exécution de la boucle "for...done" courante,  avec  le
  555.       code retour indiqué (0 par défaut).
  556.  
  557.   time <commande>
  558.       Lance l'exécution de la commande indiquée, puis affiche la durée (en
  559.       secondes) d'exécution de cette  commande.  Peut  être  utilisé  pour
  560.       toutes les commandes,  y  compris  les  commandes  internes  et  les
  561.       commandes lancées en arrière plan.
  562.  
  563.   unalias noms...
  564.       Détruit les alias indiqués.
  565.  
  566.   unset vars...
  567.       Détruit les variables locales indiquées.
  568.  
  569.   window front
  570.   window back
  571.   window move x y
  572.   window size largeur hauteur
  573.       Place la fenêtre  au  premier  plan,  au  dernier  plan,  change  sa
  574.       position ou sa taille.
  575.  
  576.   writehist
  577.       Force une sauvegarde immédiate de l'historique. Cette commande  peut
  578.       être utilisée par exemple avant de lancer un programme qui risque de
  579.       "planter" votre Amiga.
  580.  
  581. Variables spéciales
  582.  
  583.       Les variables suivantes permettent de  contrôler  et  de  paramétrer
  584.   AUSH. Sauf dans le cas où une valeur initiale est indiquée,  elles  ne  sont
  585.   pas définies au démarrage. Il est recommandé de les définir comme  variables
  586.   globales (c'est d'ailleurs ce que fait AUSH pour celles qui ont  une  valeur
  587.   initiale) ou éventuellement comme variables d'environnement de Commodore.
  588.  
  589.   cmdnum      numéro de commande, de la forme "_ShellNumber_CmdNumber"
  590.           (garanti différent pour chaque commande exécutée).
  591.   cwd         nom du répertoire courant.
  592.   debug       si vaut "1", trace les commandes exécutées (avant  et  après
  593.           première interprétation, utile pour la  mise  au  point  des
  594.           fichiers de commandes).
  595.   delim       caractères délimiteurs  de  mots  pour  les  fonctions  "mot
  596.           suivant", "mot précédent" et  "efface  la  fin  du  mot"  de
  597.           l'éditeur de la ligne de commande.
  598.           Valeur initiale : " :/".
  599.   filepat     chaine ajoutée au mot en cours pour  compléter  les  nom  de
  600.           fichiers.
  601.           Valeur initiale : "#?".
  602.   fullhist     si  vaut  "1",  sauvegarde  toutes   les   commandes   dans
  603.           l'historique, sinon ne sauvegarde pas deux fois de suite  la
  604.           même commande.
  605.   histfile    nom du fichier de  sauvegarde  de  l'historique  entre  deux
  606.           sessions. Si cette variable n'est pas définie,  l'historique
  607.           est sauvegardé dans "S:.history".
  608.   histmin     longueur minimale que doit  avoir  une  commande  pour  être
  609.           conservée dans l'historique.
  610.           Valeur initiale : 3.
  611.   history     nombre de commandes conservées  dans  l'historique  (si  non
  612.           défini ou inférieur à 1,  seule  la  dernière  commande  est
  613.           sauvée).
  614.           Valeur initiale : 50.
  615.   insert      si vaut "1", l'édition de la ligne de commande  se  fait  en
  616.           mode "insertion" (mode "remplacement" sinon).
  617.           Valeur initiale : 1.
  618.   ioerror     code d'erreur positionné  par  la  dernière  commande  ayant
  619.           échoué (pour l'instant ne  marche  que  pour  les  commandes
  620.           internes).
  621.           Valeur initiale : 0.
  622.   keys        indique comment gérer les touches de contrôle sous l'éditeur
  623.           de lignes de commande. La valeur de cette variable doit être
  624.           une chaine de lettres minuscules, chaque lettre indiquant la
  625.           touche de contrôle appelant une des fonctions de  l'éditeur.
  626.           C'est la position de la lettre dans la chaine qui  détermine
  627.           la fonction appelée :
  628.  
  629.           position 1      va en début de ligne
  630.           position 2      caractère précédent
  631.           position 3      liste des compléments
  632.           position 4      va en fin de ligne
  633.           position 5      caractère suivant
  634.           position 6      efface fin de ligne
  635.           position 7      re-affiche la ligne
  636.           position 8      ligne suivante
  637.           position 9      ligne précédente
  638.           position 10     échange deux caractères
  639.           position 11     va au début de l'historique
  640.           position 12     remplace variable
  641.           position 13     efface fin de mot
  642.           position 14     efface ligne
  643.           position 15     va à la fin de l'historique
  644.  
  645.           Par exemple, si la quatrième lettre est un "o", l'appui  sur
  646.           la touche ^o déplacera le curseur en fin de ligne.  Dans  la
  647.           redéfinition  des  touches  à  utiliser,  veuillez  ne   pas
  648.           spécifier les touches de contrôle ^h, ^i, ^j, et ^m, car ces
  649.           touches sont gérées spécialement.
  650.           Valeur initiale : "abdefklnpstvwxz".
  651.   lineedit    si vaut "1", active l'édition de la ligne de  commande.  Est
  652.           ignorée si la variable "remove" vaut "1".
  653.   noexpand    si vaut "1", désactive l'extension des méta-caractères.
  654.   path        indique le chemin de recherche  des  commandes  à  exécuter,
  655.           sous la forme d'une liste de noms de répertoires séparés par
  656.           un caractère  ";".  Pour  désigner  le  répertoire  courant,
  657.           indiquez "." comme nom de répertoire. Si un fichier avec  le
  658.           bit "s" est trouvé, AUSH tentera de déterminer son  type  et
  659.           lancera automatiquement la commande associée :
  660.  
  661.           rx      si le fichier commence par "/*" (script AREXX)
  662.           source  si le fichier commence par ";AUSH" (script AUSH)
  663.           execute dans tous les autres cas
  664.  
  665.           Exemple : setvar path 'ram:;.;c:;sys:utilities'
  666.   prompt      chaine d'invite, interprétée comme suit :
  667.  
  668.           %h      numéro dans l'historique
  669.           %#      numéro du shell
  670.           %i      niveau d'imbrication des "if"
  671.           %l      niveau d'imbrication de boucle
  672.           %c      nom du répertoire courant (variable "cwd")
  673.           %b      nom de base du répertoire courant
  674.           %s      dernier code retour (variable "status")
  675.           %Vnom   valeur de la variable "nom".
  676.           %T      heure (HH:MM:SS)
  677.           %d      jour du mois (1-31)
  678.           %D      jour de la semaine (Lun-Dim)
  679.           %m      mois (1-12)
  680.           %M      nom du mois (Jan-Dec)
  681.           %y      année (1900-1999)
  682.           %C      caractère CSI (0x9B)
  683.           %N      caractère retour chariot
  684.           %f      taille de mémoire FAST libre
  685.           %v      taille de mémoire CHIP libre
  686.           %a      taille de mémoire libre (CHIP+FAST)
  687.           %%      signe %
  688.  
  689.           Valeur initiale : "%C0;33;40m< %# - %c >%C0;31;40m ".
  690.   prompt2     idem que "prompt", mais utilisé entre "if" et "endif".
  691.           Valeur initiale : "%i> ".
  692.   prompt3     idem que "prompt", mais utilisé entre "for" et "done".
  693.           Valeur initiale : "%l) ".
  694.  
  695.   NOTE : en l'absence de définition, "> " est utilisé comme invite.
  696.  
  697.   remote      vaut "1" pour un shell utilisant "AUX:" comme terminal.
  698.   savehist    nombre de commandes sauvées entre  chaque  session  (si  non
  699.           défini ou inférieur à 1 rien n'est sauvé).
  700.   status      code retour de la dernière commande exécutée.
  701.   titlebar    idem que "prompt", mais pour le titre de la  fenêtre  shell.
  702.           Est ignorée si la variable "remote" vaut "1".
  703.   trap        commande(s) à exécuter lors de l'interruption  d'un  fichier
  704.           de commandes ou d'une boucle "for...done"  par  l'appui  sur
  705.           CTRL-C  ou  CTRL-D.  Contrairement  aux   autres   variables
  706.           spéciales,  il  est  conseillé  de  définir  cette  variable
  707.           localement (commande  "set",  permet  à  chaque  fichier  de
  708.           commandes de la modifier en fonction de ses besoins). Il est
  709.           également conseillé d'indiquer  une  commande  "exit"  comme
  710.           dernière commande (exemple : set  trap  'delete  $tmpfile  ,
  711.           exit 20'), sinon l'exécution reprendra au point où  elle  en
  712.           était (pour ignorer les interruptions : set  trap  ';').  Si
  713.           cette variable n'est pas définie,  l'exécution  est  arrêtée
  714.           avec un code retour de 20.
  715.   truepipes   utilise "PIPE:" pour gérer les tubes si cette variable  vaut
  716.           "1"
  717.   version     numéro de version de AUSH.
  718.  
  719. Notes
  720.  
  721.       Sauf si vous lui affectez une pile de plus de 4000 octets  AVANT  de
  722.   le lancer, AUSH ne pourra exécuter  plus  d'une  quinzaine  de  fichiers  de
  723.   commandes et/ou de boucles imbriquées (vous obtiendrez le message "pas assez
  724.   de place dans la pile !").
  725.       Si le nom indiqué pour les redirections en sortie  est  "TTY"  (i.e.
  726.   ">TTY" ou ">>TTY"), la redirection se fait vers la fenêtre  du  shell.  Cela
  727.   peut être utile dans un fichier de commandes, pour afficher un message alors
  728.   que la sortie de toutes les commandes a été redirigée vers un fichier.
  729.       Par défauts, les pipes sont gérés à l'aide de  fichiers  temporaires
  730.   créés dans le répertoire "T:" (voir  variable  "truepipes").  Le  répertoire
  731.   "T:" est également utilisé pour stocker des fichiers  temporaires  lors  des
  732.   substitutions de commandes et de l'exécution des boucles "for...done".
  733.       La forme "cmd &" correspond  à  la  forme  "run  cmd"  du  shell  de
  734.   Commodore. Notez que AUSH attend la fin de toutes les commandes  lancées  en
  735.   arrière plan avant de terminer. La commande "jobs" vous permettra de  savoir
  736.   quelles sont ces commandes.
  737.       AUSH n'est pas capable de récupérer le code  retour  d'une  commande
  738.   lancée en arrière plan.
  739.  
  740. Version UNIX
  741.  
  742.       AUSH comprend la  forme  "variable=valeur".  Les  formes  "@pri"  et
  743.   "&pri" sont ignorées, car nice() ne permet pas d'augmenter la  priorité.  La
  744.   commande "cd" sans arguments permet de revenir dans $HOME (comme  d'habitude
  745.   sous UNIX). Les fichiers ".aushrc" et ".history" sont  cherchés  par  défaut
  746.   dans $HOME. Dans l'invite, on ne  peut  avoir  la  memoire  restante  ou  le
  747.   caractère CSI. La variable "truepipes" est ignorée (les tubes  sont  simulés
  748.   par des fichiers dans "/tmp").
  749.       AUSH transforme automatiquement les motifs pour qu'ils correspondent
  750.   au format des expressions régulières utilisées par  "ed",  afin  de  pouvoir
  751.   étendre ces motifs. Il peut donc y  avoir  quelques  conflits  de  temps  en
  752.   temps. Les caractères reconnus pour les motifs sont '*', '?', '[' et ']'.
  753.       L'heure de décès des fils est l'heure à laquelle on détecte  sa  fin
  754.   (normalement pas trop de décalage, puisqu'on déroute le signal SIGCHLD).
  755.       Sous un shell UNIX normal, la commande  "set"  donne  la  liste  des
  756.   variables dans l'environnement courant. Sous AUSH, on obtient la  liste  des
  757.   variables locales. Si  on  veut  le  contenu  de  l'environnement,  il  faut
  758.   utiliser la commande "env".
  759.       L'éditeur de ligne de commandes tient compte du terminal indiqué par
  760.   la variable $TERM. Comme on ne peut pas récuperer les valeurs des touches de
  761.   fonctions shiftées, ainsi que de la touche shift-up,  ces  touches  ne  sont
  762.   utilisables que sur un terminal "amiga". La touche HELP ne fait rien.
  763.  
  764. Historique
  765.  
  766.   v1.00   28-Feb-92, 29564 octets
  767.       o Première version diffusée.
  768.  
  769.   v1.10   28-Mar-92, 31828 octets
  770.       o Cherche les variables également dans les  variables  ARP/Commodore
  771.         et Manx.
  772.       o La touche "^D" affiche les possibilités pour compléter le  nom  de
  773.         fichier ou de variable, les touches "^B", "^F", "^N" et "^P"  font
  774.         la même chose que "gauche", "droite", "bas" et "haut".
  775.       o L'éditeur de ligne de commande efface  le  curseur  pendant  qu'il
  776.         exécute une commande (affichage plus rapide).
  777.       o La requête de fichier récupère le mot en cours pour initialiser le
  778.         répertoire initial de la requête.
  779.       o Remet à zéro les signaux SIGBREAKF en retour de l'éditeur de ligne
  780.         de commandes (car ils sont positionnés si on utilise  ^D,  ^E,  ou
  781.         ^F).
  782.       o Les formes "!!", "!n" et "!chaine" peuvent être indiquée n'importe
  783.         où sur la ligne de commande.
  784.       o Ajout des formes -D, -E, et -F à la commande "if".
  785.       o Ajout de la forme "for var in  val1  ..  val2"  pour  la  commande
  786.         "for...done".
  787.       o Ajout de l'alias "dircmd".
  788.       o Ajoute un espace après une définition d'alias sans  arguments  (si
  789.         on faisait "alias ls dir" puis  "ls  ram:"  on  avait  un  message
  790.         "Please insert volume dirram: in any drive").
  791.       o Messages d'erreur en  allemand  si  la  variable  "language"  vaut
  792.         "deutsch".
  793.       o Commande "setenv" renommée en "setvar" (plus de conflits  avec  la
  794.         commande de Commodore), ajout de la commande "echo".
  795.       o Ajout  des  variables  "version"  et  "path",  variable  "ioerror"
  796.         initialisée à "0", variable "insert" initialisée à  "1",  variable
  797.         "autocd" supprimée.
  798.  
  799.   v1.11   29-Mar-92, 31832 octets
  800.       o La commande "echo" tient compte des redirections en sorties
  801.  
  802.   v1.12   11-Apr-92, 32244 octets
  803.       o Charge l'historique après  l'exécution  de  "S:.aushrc",  afin  de
  804.         prendre en compte une éventuelle modification de la valeur  de  la
  805.         variable "history".
  806.       o Ajout des formes "NE", "LE", et "GE" à la commande "if".
  807.       o La forme "for i in val1 .. val2" accepte des nombres  négatifs  et
  808.         que "val2" soit inférieur à "val1".
  809.       o Plus de contrôle de la taille des  arguments  pour  les  commandes
  810.         internes.
  811.       o Ajout de la fonction "^V" à l'éditeur de ligne de commandes.
  812.  
  813.   v1.13   18-Apr-92, 32280 octets
  814.       o Lors de la recherche d'une commande à l'aide de la variable "path"
  815.         vérifie que  l'objet  trouvé  est  bien  un  fichier  (et  non  un
  816.         répertoire).
  817.  
  818.   v1.14   26-Apr-92, 32300 octets
  819.       o  Deux  erreurs  corrigées  dans  la  substitution  de  commande  :
  820.         n'éliminait pas le "`" final, calcul de la longueur des  arguments
  821.         incorrect.
  822.       o Une erreur corrigée dans le parcoureur : interprétait  quand  même
  823.         les caractères "<>,;" s'ils étaient en première position dans  une
  824.         chaine entre quotes.
  825.       o Messages en allemands revus
  826.  
  827.   v1.15   01-May-92, 32364 octets
  828.       o Ajout de la variable "histfile".
  829.       o Deux erreurs corrigées dans le calcul de la longueur des arguments
  830.         : oubliait de compter les guillements ou les quotes, et de prévoir
  831.         un peu de place supplémentaire pour les arguments "splités".
  832.  
  833.   v1.16   11-May-92, 32404 octets
  834.       o commande "echo" revue : quand on met l'option -c supprime vraiment
  835.         le '\n' final (i.e. ne le remplace pas par un espace)
  836.  
  837.   v1.20   16-May-92, 32568 octets
  838.       o ajout des commandes "loadhist" et "writehist"
  839.       o ajout de la forme "%Vnom" à la syntaxe du l'invite
  840.       o modification du parcoureur :  n'analyse  la  partie  droite  d'une
  841.         commande composée qu'après avoir exécuté la partie gauche, et donc
  842.         :
  843.         - "cd ram: , delete *" donne le résultat attendu ("*" était étendu
  844.         avant de faire le "cd")
  845.         - toutes les commandes simples peuvent être des alias (et non plus
  846.         seulement la première)
  847.         - on peut écrire une boucle sur une seule ligne ("for i in 1 .. 50
  848.         , echo $i , done" ne marchait pas, maintenant même "cd ram: ,  for
  849.         i in *.c , echo $i , compress $i , done , echo fini" fonctionne !)
  850.  
  851.   v1.21   17-May-92, 32912 octets
  852.       o ajout de la commande "time"
  853.  
  854.   v1.22   23-May-92, 32944 octets
  855.       o bug corrigé dans la gestion des boucles  "for...done"  :  lors  de
  856.         l'écriture des commandes dans le fichier  temporaire,  ne  forçait
  857.         pas une fin de ligne après chaque commande
  858.  
  859.   v1.23   01-Jun-92, 33328 octets
  860.       o Plusieurs bugs corrigés dans la gestion des  boucles  "for...done"
  861.         écrites sur une même ligne :  "for  i  in  1  ..  5,echo  $i,done"
  862.         marche, ainsi que "for i in 1 .. 5 , list | wc , done"
  863.       o Si trouve un fichier avec le bit "s"  en  cherchant  une  commande
  864.         dans  le   chemin   défini   par   la   variable   "path",   lance
  865.         automatiquement une commande "source" sur ce fichier.
  866.       o La touche "^S" échange les deux caractères précédant le curseur.
  867.       o Les touches "^D" et "<TAB>" sont utilisables sans préfixe, et donc
  868.         en début de ligne ou après un espace.
  869.       o Bug  corrigé  dans  l'éditeur  de  ligne  de  commande:  après  un
  870.         "shift-haut", les touches "haut" et "bas"  ne  donnaient  pas  les
  871.         bonnes commandes.
  872.  
  873.   v1.30   14-Jun-92, 33932 octets
  874.       o Plusieurs  erreurs  détectées   par   "Enforcer"   et   "Mungwall"
  875.         corrigées.
  876.       o Bug corrigé dans la commande "shift" : ne positionnait pas  "argc"
  877.         correctement.
  878.       o Reconnait "$*" (remplacé par la liste des arguments séparés par un
  879.         espace).
  880.       o Ajout de l'option -f à la commande "read".
  881.       o La variable "argc" est en lecture seulement.
  882.       o Vérifie les  noms  de  variables  donnés  aux  commandes  internes
  883.         (interdit les pseudo-variables arguments).
  884.       o Les spécifications  "&[pri]"  et  "@pri"  peuvent  être  indiquées
  885.         n'importe où sur la ligne de commande.
  886.  
  887.   v1.40   26-Jun-92, 37764 octets
  888.       o Recompilé avec le SAS/C 5.10b (avec pragmas et optimisation)
  889.       o Peut être rendu résident (code "pure")
  890.       o Enorme bug corrigé dans la fonction strxcat() (ne sauvegardait pas
  891.         le registre a2)
  892.       o Nombreuses modifications pour mieux tenir compte de la version  du
  893.         système, ainsi sous système 2.04 :
  894.         - n'a plus besoin de "arp.library"
  895.         - peut exécuter les programmes résidents/internes (ROM)
  896.         - la commande "Execute" peut être utilisée
  897.       o Modification de l'évaluateur d'expressions :
  898.         - on peut indiquer des valeurs en hexa (0x1FD)
  899.         - ajout des opérateurs "HEX", "<", ">", "&", et "|"
  900.       o Ajout de l'option "-o" à la commande "if"
  901.       o Bug corrigé  dans  la  commande  "if":  n'appelait  UnLock()  dans
  902.         certains cas d'erreur
  903.  
  904.   v1.41   30-Jun-92, 37864 octets
  905.       o Correction dans la recherche des commandes:  ne  cherche  plus  le
  906.         chemin si la commande est résidente
  907.  
  908.   v1.42   06-Jul-92, 37872 octets (Fish #706)
  909.       o Bug corrigé dans la gestion des boucles  "for...done":  "oubliait"
  910.         les redirections des commandes dans la boucle
  911.       o Ne  fait  plus  crier  "Enforcer"  quand  on  fait  "!string"  (ou
  912.         "shift-haut" dans l'éditeur de lignes de commandes)  et  qu'aucune
  913.         commande commençant par "string" ne se trouve dans l'historique
  914.  
  915.   v1.50   21-Aug-92, 37736 octets
  916.       o Ajout de la  variable  globale  "keys"  (permet  de  modifier  les
  917.         fonctions des touches de contrôle  sous  l'éditeur  de  lignes  de
  918.         commande)
  919.       o Accepte l'argument "FROM file"
  920.       o Contrôles plus stricts au démarrage: proc->pr_CLI valide,  pas  de
  921.         lancement depuis le WB, etc...
  922.       o Bug  corrigé  dans  l'évaluation  des  expressions:  affichait  le
  923.         résultat en décimal même si on indiquait "HEX"
  924.       o Bug corrigé sous système 1.3: ne donnait pas le chemin complet  de
  925.         la commande à la fonction qui lance l'exécution
  926.  
  927.   v1.51   01-Sep-92, 37804 octets
  928.       o  Bug  corrigé  dans  la  recherche  du  chemin:  après   exécution
  929.         automatique d'un script (bit "s" détecté) les commandes  suivantes
  930.         étaient parfois considérées  elles-aussi  comme  des  scripts  (et
  931.         exécutées comme telles !!!)
  932.       o La commande "history str" n'affiche que les  commandes  commençant
  933.         par "str"
  934.       o  La  commande  "history"  teste  CTRL-C  lors  de  l'affichage  de
  935.         l'historique
  936.       o Affiche la commande retrouvée quand on utilise  les  formes  "!!",
  937.         "!n" ou "!str"
  938.       o Bug corrigé: quand on faisait un "cd  volume:"  la  variable  $cwd
  939.         n'avait pas de ':' à la fin (d'où problème par  exemple  quand  on
  940.         faisait "copy df0:toto $cwd")
  941.       o Bug corrigé dans le complément  de  nom  de  fichier:  distinguait
  942.         minuscules et majuscules
  943.  
  944.   v1.52   22-Sep-92, 40000 octets (Fish #747)
  945.       o La forme ${nom de var} est  acceptée  (permet  par  exemple  "echo
  946.         ${var}coucou")
  947.       o Ajout des fonctions sur les variables (formes  "$var:fonction"  et
  948.         "${var:fonction}")
  949.       o Ajout du test "==" à la commande "if"
  950.       o Sous système 2.0, la longueur des arguments n'est plus limitée
  951.       o Bug corrigé: teste le bit "s"  aussi  quand  on  donne  le  chemin
  952.         complet de la commande
  953.       o Quelques bugs corrigés dans la gestion des boucles "for...done"
  954.       o La variable $cwd se termine maintenant toujours soit par ":"  soit
  955.         par "/"
  956.       o Si aucun fichier ne correspond à  un  motif,  affiche  un  message
  957.         d'erreur et n'exécute pas la commande
  958.  
  959.   v1.53   22-Sep-92, 40136 octets
  960.       o Peut maintenant être utilisé avec "AUX:" comme terminal
  961.       o Ajout de la variable "remote"
  962.       o Les variables "cmdnum", "cwd",  "status",  "version"  et  "remote"
  963.         sont désormais en lecture seulement
  964.       o L'accès à la pile des répertoires se fait avec "§no"  au  lieu  de
  965.         "=no" (plus besoin de protéger le "=" pour la commande "if")
  966.  
  967.   v1.54   05-Oct-92, 40120 octets
  968.       o Plus de blocages de l'éditeur de lignes de commandes
  969.       o Bug corrigé: n'arrivait pas à exécuter une commande sur un  volume
  970.         dont le nom comportait des espaces
  971.       o Bug corrigé: en cas d'erreur de syntaxe sur une des formes !!,  !n
  972.         ou !str, exécutait quand même la commande
  973.  
  974.   v1.55   23-Oct-92, 40764 octets
  975.       o Ajout de la forme "for var from file"
  976.       o Lors du lancement d'une commande en arrière plan, tout  canal  qui
  977.         n'a pas déjà été redirigé est redirigé vers "NIL:"
  978.       o Si la variable "truepipes" vaut "1", utilise  "PIPE:"  pour  gérer
  979.         les tubes (sous système 2.0 uniquement)
  980.       o Ajout des fonctions "base" et "noext"
  981.  
  982.   v2.00   03-Feb-93, 37744 octets
  983.       o Recompilé avec le SAS/C 6.2.
  984.       o Ne fonctionne plus que sous système 2.0 et plus
  985.       o Complètement localisé.
  986.  
  987.   v2.01   07-Mar-93, 37988 octets
  988.       o Se termine si on clique sur le gadget de fermeture de la fenêtre
  989.       o Construction de la chaine d'argument modifiée  (ajoute  un  espace
  990.         avant, et non après)
  991.       o On peut avoir un '%' dans l'invite ou le titre de la  fenêtre,  en
  992.         indiquant '%%'
  993.  
  994.   v2.02   28-Mar-93, 38020 octets
  995.       o Bug corrigé: dans la forme "if str = str", si la  première  chaine
  996.         commençait par un "-", l'interprétait comme une  forme  "if  -test
  997.         ..." sans aucun contrôle
  998.  
  999.   v2.03   13-Apr-93, 38060 octets
  1000.       o Lors du complètement des noms de fichiers, ajoute  automatiquement
  1001.         un '/' si c'est un répertoire ou un ' ' si c'est un fichier
  1002.  
  1003.   v2.04   04-May-93, 38268 octets
  1004.       o Ajout de la fonction "split"
  1005.  
  1006.   v3.00   14-May-93, 39336 octets
  1007.       o Parcoureur entièrement ré-écrit ("$toto:split" en début  de  ligne
  1008.         marche désormais, etc...)
  1009.       o Gestion des alias modifiée :
  1010.         - les définitions NE DOIVENT PLUS être entre quotes simples
  1011.         - les définitions peuvent utiliser %1, %2,... %9 pour indiquer  la
  1012.         position des arguments (la spécification [] est toujours reconnue)
  1013.       o Editeur de lignes de commandes modifié :
  1014.         - plus de problèmes avec les commandes de plus d'une ligne
  1015.         - le complètement de nom de fichiers marche au milieu d'un mot
  1016.         -  les  fonctions  "début  d'historique"  et  "fin   d'historique"
  1017.         marchent correctement
  1018.       o Lors du lancement automatique d'un  script  (bit  "s")  essaye  de
  1019.         deviner son type (AREXX, AUSH ou autre)
  1020.  
  1021.   v3.10   25-May-93, 45964 octets
  1022.       o Se compile et s'exécute sous UNIX
  1023.       o Ajout de la fonction "expand", de la commande "window"
  1024.       o La commande "time" fonctionne à nouveau
  1025.       o Si un code d'erreur ne correspond à aucun des messages prévus dans
  1026.         le catalogue, appelle la fonction Fault() pour avoir le libellé
  1027.       o Erreur corrigée dans les catalogues (TOUS !)
  1028.       o Plusieurs erreurs corrigées ("echo" sans  arguments,  complètement
  1029.         avec curseur en fin de mot, contrôle des noms de variable, etc...)
  1030.  
  1031.   v3.11   01-Jun-93, 46388 octets
  1032.       o Sur Amiga, ne perd plus les caractères tapés à l'avance
  1033.       o "window" sans arguments indique la position et  la  taille  de  la
  1034.         fenêtre
  1035.  
  1036.   v3.12   17-Jun-93, 46396 octets
  1037.       o Erreur corrigée: interprétait ',' et '|' en début de chaine  entre
  1038.         '' ou "" ou en début de contenu de variable
  1039.       o Erreur corrigée: dans un script,  une  ligne  vide  était  traitée
  1040.         comme fin de fichier
  1041.  
  1042.   v3.13   27-Jun-93, 46472 octets
  1043.       o Quelques modifications  pour  faciliter/améliorer  la  compilation
  1044.         sous UNIX
  1045.       o Sous UNIX, l'invite par défaut ne contient plus de séquences  ANSI
  1046.       o Ajout de la spécification "%b" pour la définition de l'invite
  1047.  
  1048.   v3.14   10-Jul-93, 46588 octets
  1049.       o Compilé avec le SAS/C 6.3
  1050.       o L'appel de la requête de fichier causait un "hit" avec Enforcer
  1051.       o Correction d'une erreur dans le parcoureur  (remplacement  de  '*'
  1052.         par '#?' fait plus proprement)
  1053.       o La commande NewAUSH retourne 0 et non 1
  1054.  
  1055.   v3.15   25-Jul-93, 46608 octets
  1056.       o Le nombre maximal d'argument pour les commandes passe  à  128  (au
  1057.         lieu de 64)
  1058.       o Erreur corrigée dans le parcoureur: $i, "toto" et 'titi' n'étaient
  1059.         pas reconnus correctement après un symbole de redirection ('>'  ou
  1060.         '<', par exemple "toto > $i" ne marchait pas).
  1061.       o Erreur corrigée: "cd" ne changait plus cli_SetName sous  AmigaDOS.
  1062.  
  1063.   v3.16   08-Apr-94, 46644 octets
  1064.       o Recompilé avec le SAS/C 6.51 (corrige quelques erreurs)
  1065.  
  1066.   v3.17   01-Jul-94, 46608 octets
  1067.       o  Erreur  corrigée:  "NewAUSH"  ne  gérait  pas  correctement   les
  1068.         arguments
  1069.